package cn.tedu;

import java.io.*;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) throws IOException {
        System.out.println("请输入源文件的路径:");
        String from=new Scanner(System.in).nextLine();
        System.out.println("请输入目标文件的路径:");
        String to=new Scanner(System.in).nextLine();
        //String to="F:\\ideaIO\\3.txt";
        copy(from,to);
        System.out.println("文件复制完成");

    }
    private static void copy(String from,String to) throws IOException {

        //1, 准备读取流和写出流 -- 读取from文件,,把数据写出到to里
        InputStream in = new BufferedInputStream(new FileInputStream(from));
        OutputStream out = new BufferedOutputStream(new FileOutputStream(to));

        //TODO 批量读写--优化单字节读写的效率
        byte[] bs = new byte[8192];//缓冲数据的数组,可以自定义容量
        //模拟底层,使用容量是8192个字节.8*1024字节=8K的量
        //        int data = in.read(bs);//批量读,优化了单个字节读取的效率
        //        out.write(bs);//批量写出,优化了单个字节写出的效率

        //TODO 2,开始读和写
        int b = 0 ; //记录读到的数据的 长度
        while ( ( b = in.read(bs) ) != -1 ) {//有数据就读,没数据时返回-1  -1代表空
            //System.out.println(b);//打印读到的数据的 长度
            out.write(bs);//把读到的数据写出去
        }
        //3,释放资源
        in.close();
        out.close();
    }
}